<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>await</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/async/3.2.0/async.js"></script>
</head>
<body>
  <script>
      // await后面可以跟任何表达式，不过我们更多的是放一个返回promise对象的表达式。注意：await只能放在async函数里面
      // 现在写一个函数，让它返回promise对象，该函数的作用是2s之后让数值乘以2
      function doubleValue(num) {
        return new Promise((resolve, reject) => {
          setTimeout(() => {
            resolve(2 * num)
          },2000)
        })
      }
      // 现在再写一个async函数，从而可以使用await关键字，await后面放置的就是返回promise对象的一个表达式
      async function testResult() {
        let result = await doubleValue(30)
        console.log(result)
      }
      testResult() // 打开控制台，2s后输出了60
      /*
      现在我们看看代码的执行过程，调用testResult函数，它里面遇到了await，await表示等一下，代码就暂停到这里，不再向下执行了，等到
      后面的promise对象执行完毕，然后拿到promise resolve的值并进行返回，返回值拿到后，它继续向下执行
      */
  </script>
</body>
</html>